home *** CD-ROM | disk | FTP | other *** search
- /*
- * Recording process, second try: now use pseudo-terminals.
- */
-
- main(argc, argv, envp)
- int argc;
- char **argv;
- char **envp;
- {
- int master_fd, slave_fd, childpid;
-
- if (!isatty(0) || !isatty(1))
- err_quit("stdin and stdout must be a terminal");
-
- master_fd = pty_master();
- if (master_fd < 0)
- err_sys("can't open master pty");
-
- if ( (childpid = fork()) < 0)
- err_sys("can't fork");
- else if (childpid == 0) { /* child process */
- slave_fd = pty_slave(master_fd);
- if (slave_fd < 0)
- err_sys("can't open pty slave");
- close(master_fd);
-
- exec_shell(slave_fd, argv, envp);
- /* NOTREACHED */
- }
-
- pass_all(master_fd, childpid);
- exit(0);
- }
-